home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2006 May / PCWMAY06.iso / Software / Trial / ConceptDraw NetDiagrammer / data1.cab / Samples__Basic / Solutions / OrgChart / TextBasedChart.cdb < prev    next >
Text File  |  2006-02-08  |  7KB  |  128 lines

  1. '╨ö╨▓╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨░ ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤é ╤Ç╨░╤ü╨┐╨╛╨╗╨╛╨╢╨╡╨╜╨╕╨╡ ╨╛╨▒╤è╨╡╨║╤é╨╛╨▓ ╨▓ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨╡ ConceptDraw, ╨║╨╛╨│╨┤╨░ ╨╛╨╜╨╕ ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤é
  2. '╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╜╨╡╨║╨╛╤é╨╛╤Ç╨╛╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å ╤ü╨╗╤â╨╢╨╡╨▒╨╜╨╛╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕. ╨á╨░╨╖╨╝╨╡╤Ç╨╜╨╛╤ü╤é╤î ╨╝╨░╤ü╤ü╨╕╨▓╨░ ╤Ç╨░╨▓╨╜╨░ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╤â ╤â╤Ç╨╛╨▓╨╜╨╡╨╣
  3. '╤ü╨╗╤â╨╢╨╡╨▒╨╜╨╛╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕.
  4.  
  5. '╨₧╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╤Ä╤é╤ü╤Å ╨╜╨░╨┐╤Ç╨░╨▓╨╗╨╡╨╜╨╕╤Å, ╨┐╨╛ ╨║╨╛╤é╨╛╤Ç╤ï╨╝ ╨▒╤â╨┤╤â╤é ╤Ç╨░╤ü╨┐╨╛╨╗╨░╨│╨░╤é╤î╤ü╤Å ╨╛╨▒╤è╨╡╨║╤é╤ï ╨▓ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨╡ ╨╜╨░ ╤ì╤é╨╛╨╝ ╤â╤Ç╨╛╨▓╨╜╨╡
  6. '╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕. ╨ƒ╤Ç╨╕╨╜╨╕╨╝╨░╨╡╤é ╨╛╨┤╨╜╨╛ ╨╕╨╖ ╨╖╨╜╨░╤ç╨╡╨╜╨╕╨╣ ╨║╨╛╨╜╤ü╤é╨░╨╜╤é conbytAlone, conbytVertical, conbytHorizontal.
  7. Dim aiDirection() As Integer
  8. '╨£╨░╨║╤ü╨╕╨╝╨░╨╗╤î╨╜╨╛╨╡ ╨║╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨╜╨░ ╤ì╤é╨╛╨╝ ╤â╤Ç╨╛╨▓╨╜╨╡ ╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕
  9. Dim aiMaxBranches() As Integer
  10. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╤ì╤é╨╕╤à ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓
  11. Dim iStatUBound As Integer
  12.  
  13. '╨ô╤Ç╤â╨┐╨┐╨░ ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓, ╤ü╨╛╨┤╨╡╤Ç╨╢╨░╤ë╨╕╤à ╨┤╨░╨╜╨╜╤ï╨╡ ╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░╤à. ╨Ü╨░╨╢╨┤╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╤Ä╤é ╨┤╨░╨╜╨╜╤ï╨╡
  14. '╤ü ╨╛╨┤╨╕╨╜╨░╨║╨╛╨▓╤ï╨╝ ╨╕╨╜╨┤╨╡╨║╤ü╨╛╨╝. ╨¥╤â╨╗╨╡╨▓╨╛╨╣ ╨╕╨╜╨┤╨╡╨║╤ü ╤ü╨╛╨╛╤é╨▓╨╡╤é╤ü╤é╨▓╤â╨╡╤é ╤ä╨╕╨║╤é╨╕╨▓╨╜╨╛╨╝╤â ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╤â ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å.
  15. '╨Æ╨▓╨╛╨┤╨╕╤é╤ü╤Å ╨┤╨╗╤Å ╤â╨┐╤Ç╨╛╤ë╨╡╨╜╨╕╤Å ╨░╨╗╨│╨╛╤Ç╨╕╤é╨╝╨░. ╨á╨╡╨░╨╗╤î╨╜╤ï╨╡ ╤Ç╤â╨║╨╛╨▓╨╛╨┤╨╕╤é╨╡╨╗╨╕ ╤ü╨░╨╝╨╛╨│╨╛ ╨▓╨╡╤Ç╤à╨╜╨╡╨│╨╛ ╤â╤Ç╨╛╨▓╨╜╤Å ╤ü╤ç╨╕╤é╨░╤Ä╤é╤ü╤Å ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╨╝╨╕
  16. '╤ì╤é╨╛╨│╨╛ ╤â╤ü╨╗╨╛╨▓╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░.
  17.  
  18. 'ID ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  19. Dim asID() As String
  20. 'ID ╨╜╨╡╨┐╨╛╤ü╤Ç╨╡╨┤╤ü╤é╨▓╨╡╨╜╨╜╨╛╨│╨╛ ╨╜╨░╤ç╨░╨╗╤î╨╜╨╕╨║╨░ ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╨▓ ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨╣ ╨▒╨░╨╖╨╡ ╨┤╨░╨╜╨╜╤ï╤à
  21. Dim asChiefID() As String
  22. '╨ñ╨ÿ╨₧ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  23. Dim asName() As String
  24. '╨ö╨╛╨╗╨╢╨╜╨╛╤ü╤é╤î ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  25. Dim asPost() As String
  26. '╨É╨┤╤Ç╨╡╤ü ╤ì╨╗╨╡╨║╤é╤Ç╨╛╨╜╨╜╨╛╨╣ ╨┐╨╛╤ç╤é╤ï ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  27. Dim asEMail() As String
  28. '╨ö╨╛╨┐╨╛╨╗╨╜╨╕╤é╨╡╨╗╤î╨╜╨░╤Å ╨╕╨╜╤ä╨╛╤Ç╨╝╨░╤å╨╕╤Å
  29. Dim asCustom() As String
  30. Dim iCustomCount As Integer
  31. iCustomCount = 0
  32. '╨ú╤Ç╨╛╨▓╨╡╨╜╤î ╨▓╨╗╨╛╨╢╨╡╨╜╨╜╨╛╤ü╤é╨╕ ╨╛╨▒╤è╨╡╨║╤é╨░, ╨┐╤Ç╨╡╨┤╤ü╤é╨░╨▓╨╗╤Å╤Ä╤ë╨╡╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░, ╨▓ ╨╛╨▒╤ë╨╡╨╣ ╨╕╨╡╤Ç╨░╤Ç╤à╨╕╨╕
  33. Dim aiLevel() As Integer
  34. '╨¿╨╕╤Ç╨╕╨╜╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  35. Dim adBranchWidth() As Double
  36. '╨Æ╤ï╤ü╨╛╤é╨░ ╨▓╨╡╤é╨▓╨╕, ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╨╝╨╛╨╣ ╨┤╨░╨╜╨╜╤ï╨╝ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨╛╨╝
  37. Dim adBranchHeight() As Double
  38. '╨ñ╨╗╨░╨│, ╤â╨║╨░╨╖╤ï╨▓╨░╤Ä╤ë╨╕╨╣, ╤ç╤é╨╛ ╨┤╨░╨╜╨╜╤ï╨╣ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║ ╨┐╨╛╤Ç╨╛╨╢╨┤╨░╨╡╤é ╨▓╨╡╤é╨▓╤î, ╨║╨╛╤é╨╛╤Ç╤â╤Ä ╤ü╨╗╨╡╨┤╤â╨╡╤é ╨╕╨╖╨╛╨▒╤Ç╨░╨╖╨╕╤é╤î ╨╜╨░ ╨╛╤é╨┤╨╡╨╗╤î╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡
  39. Dim abNewPage() As Boolean
  40. '╨Ü╨╛╨╗╨╕╤ç╨╡╤ü╤é╨▓╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à ╤â ╨┤╨░╨╜╨╜╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░
  41. Dim asSubordCount() As Integer
  42. '╨ö╨▓╤â╨╝╨╡╤Ç╨╜╤ï╨╣ ╨╝╨░╤ü╤ü╨╕╨▓. ╨ö╨╗╤Å ╨║╨░╨╢╨┤╨╛╨│╨╛ ╤ü╨╛╤é╤Ç╤â╨┤╨╜╨╕╨║╨░ ╤ü╨╛╨┤╨╡╤Ç╨╢╨╕╤é ╨╕╨╜╨┤╨╡╨║╤ü╤ï ╨▓╤ü╨╡╤à ╨╡╨│╨╛ ╨┐╨╛╨┤╤ç╨╕╨╜╨╡╨╜╨╜╤ï╤à. ╨ƒ╨╛╨╖╨▓╨╛╨╗╤Å╨╡╤é 
  43. '╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╤é╤î ╤ü╤à╨╡╨╝╤â ╨║╨░╨║ ╨┤╤Ç╨╡╨▓╨╛╨▓╨╕╨┤╨╜╤â╤Ä ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â. 
  44. Dim asSubordinates() As Integer
  45. '╨Æ╨╡╤Ç╤à╨╜╤Å╤Å ╨│╤Ç╨░╨╜╨╕╤å╨░ ╤ì╤é╨╕╤à ╨╝╨░╤ü╤ü╨╕╨▓╨╛╨▓
  46. Dim iUBound As Integer
  47.  
  48. '╨¥╨░╨╖╨▓╨░╨╜╨╕╨╡ ╨║╨╛╨╝╨┐╨░╨╜╨╕╨╕
  49. Dim strOrgName As String
  50.  
  51. '╨ñ╨╗╨░╨│, ╤â╨║╨░╨╖╤ï╨▓╨░╤Ä╤ë╨╕╨╣ ╤ü╤é╤Ç╨╛╨╕╤é╤ü╤Å ╨╗╨╕ ╤ü╤à╨╡╨╝╨░ ╨╜╨░ ╨╡╨┤╨╕╨╜╤ü╤é╨▓╨╡╨╜╨╜╨╛╨╣ ╤ü╤é╤Ç╨░╨╜╨╕╤å╨╡ ╨╕╨╗╨╕ ╨╜╨░ ╨╜╨╡╤ü╨║╨╛╨╗╤î╨║╨╕╤à.
  52. Dim bAllOnOnePage As Boolean
  53.  
  54. '╨¿╨╕╤Ç╨╕╨╜╨░ ╨╕ ╨▓╤ï╤ü╨╛╤é╨░ ╤ü╤é╤Ç╨░╨╜╨╕╤å╤ï ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨▓ Units.
  55. Dim intChartWidth As Integer
  56. Dim intChartHeight As Integer
  57.  
  58.  
  59. Declare Sub BuildOrgChart(ByRef sOnOnePage As String)
  60. Declare Sub GetBranchStatistic(ByRef iPersonStart As Integer, ByVal intLevel As Integer)
  61. Declare Sub SetBranchSize(ByRef iPersonStart As Integer, ByVal intLevel As Integer, ByRef dblReturnX As Double, ByRef dblReturnY As Double)
  62. Declare Sub GetOrgStatistic()
  63. Declare Sub IsBranchTooLarge(ByRef iPersonStart As Integer)
  64. Declare Sub DrawChart()
  65. Declare Sub DrawBranch(ByRef intPerson As Integer, ByVal lPage As Long, ByVal dblChiefShapeX As Double, ByVal dblChiefShapeY As Double, ByVal dblShapeX As Double, ByVal dblShapeY As Double, ByRef intReturnPersonLinkNextPages As Integer, ByRef bReturnPersonLinkNextPages As Boolean, ByRef intLinkToPage As Integer, ByVal workLib As Library)
  66. Declare Sub DrawPersonData(ByVal intPerson As Integer, ByRef activePage As Page, ByVal dblShapeX As Double, ByVal dblShapeY As Double, ByVal intLinkToPage As Integer, ByVal workLib As Library)
  67. Declare Function BuildOrgTreeFromTXT(ByRef strTextFileName As String) As Boolean
  68.  
  69.  
  70. #INCLUDE "consts.cdb"
  71. #INCLUDE "drawFunctions.cdb"
  72. #INCLUDE "loadTXTFunctions.cdb" 
  73.  
  74. '========================================================================================================================
  75. '========================================================================================================================
  76.  
  77. '╨í╨╛╨╖╨┤╨░╨╜╨╕╨╡ ╨┐╨╛╨╗╤î╨╖╨╛╨▓╨░╤é╨╡╨╗╤î╤ü╨║╨╛╨│╨╛ ╨╝╨╡╨╜╤Ä. ╨É╨▓╤é╨╛╨╝╨░╤é╨╕╤ç╨╡╤ü╨║╨╕ ╨▓╤ï╨╖╤ï╨▓╨░╨╡╤é╤ü╤Å ╨┐╤Ç╨╕ ╨╛╤é╨║╤Ç╤ï╤é╨╕╨╕ ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░ ╨╕╨╖
  78. '╨╝╨░╨║╤Ç╨╛╤ü╨░ ╤â╤Ç╨╛╨▓╨╜╤Å ╨┤╨╛╨║╤â╨╝╨╡╨╜╤é╨░.
  79. Sub CreateUserMenu()
  80.     Dim custMenu As Menu
  81.     Dim newMenuItem As MenuItem
  82.     
  83.     Set custMenu = thisDoc.CustomMenu
  84.     custMenu.Caption = "&BuildOrgChart"
  85.     custMenu.RemoveAll()
  86.  
  87.     Set newMenuItem = custMenu.AddMenuItem(0)
  88.     newMenuItem.Caption = "All On A &One Page"
  89.     newMenuItem.OnCmdArgs = "True"
  90.     newMenuItem.SetCmdProcessing("BuildOrgChart")
  91.      
  92.     Set newMenuItem = custMenu.AddMenuItem(0)
  93.     newMenuItem.Caption = "All On A &Few Page"
  94.     newMenuItem.OnCmdArgs = "False"
  95.     newMenuItem.SetCmdProcessing("BuildOrgChart")
  96. End Sub
  97.  
  98. '========================================================================================================================
  99. '========================================================================================================================
  100.  
  101. '╨₧╤ü╨╜╨╛╨▓╨╜╨░╤Å ╤â╨┐╤Ç╨░╨▓╨╗╤Å╤Ä╤ë╨░╤Å ╨┐╤Ç╨╛╤å╨╡╨┤╤â╤Ç╨░.
  102. Sub BuildOrgChart(ByRef sOnOnePage As String)
  103. On Error GoTo ErrHandler
  104.     Dim strTextFileName As String
  105.     If sOnOnePage = "True" Then
  106.         bAllOnOnePage = True
  107.     Else
  108.         bAllOnOnePage = False
  109.     End If        
  110.     
  111.     '╨ƒ╨╛╨╗╤â╤ç╨╕╤é╤î ╨╕╨╝╤Å ╤é╨╡╨║╤ü╤é╨╛╨▓╨╛╨│╨╛ ╤ä╨░╨╣╨╗╨░, ╨╛╨┐╨╕╤ü╤ï╨▓╨░╤Ä╤ë╨╡╨│╨╛ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕.
  112.     strTextFileName = GetOpenFileName("txt","Text Files")
  113.     If strTextFileName <> "" Then 
  114.     '╨ò╤ü╨╗╨╕ ╨╕╨╝╤Å ╨┐╨╛╨╗╤â╤ç╨╡╨╜╨╛, ╨╛╨▒╤Ç╨░╨▒╨░╤é╤ï╨▓╨░╨╡╨╝ ╤é╨╡╨║╤ü╤é, ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╨╡╨╝ ╤ü╤é╤Ç╤â╨║╤é╤â╤Ç╤â ╨╛╤Ç╨│╨░╨╜╨╕╨╖╨░╤å╨╕╨╕ ╨╕ ╨╖╨░╨┐╨╛╨╗╨╜╤Å╨╡╨╝ ╨╝╨░╤ü╤ü╨╕╨▓╤ï ╨┤╨░╨╜╨╜╤ï╤à.
  115.         If BuildOrgTreeFromTXT(strTextFileName) Then        
  116.         '╨ò╤ü╨╗╨╕ ╨┐╤Ç╨╕ ╨╖╨░╤ç╨╕╤é╤ï╨▓╨░╨╜╨╕╨╕ ╤ä╨░╨╣╨╗╨╛╨▓ ╨╜╨╡ ╨┐╤Ç╨╛╨╕╨╖╨╛╤ê╨╗╨╛ ╨╛╤ê╨╕╨▒╨╛╨║, ╨╛╨┐╤Ç╨╡╨┤╨╡╨╗╤Å╨╡╨╝ ╤ü╤é╨░╤é╨╕╤ü╤é╨╕╨║╤â ╨╕ ╨┐╨░╤Ç╨░╨╝╨╡╤é╤Ç╤ï ╨▓╤ï╨▓╨╛╨┤╨░ ╨┤╨╕╨░╨│╤Ç╨░╨╝╨╝╤ï...
  117.             GetOrgStatistic()            
  118.             '...╨╕ ╤Ç╨╕╤ü╤â╨╡╨╝ ╨╡╨╡.
  119.             DrawChart()        
  120.         End IF
  121.         
  122.     End If    
  123.     Exit Sub
  124.  
  125. ErrHandler:
  126.     MsgBox ("In performing the macros, an error has occured.", cdbExclamation)
  127. End Sub
  128.